﻿/*
 * 
 * contient les data specifique games.thewalker 
 * quand les data des tableaux arriveront, déplacer les data perso vers games.thewalker.BipedeConfig ?
 * 
 * */
package games.thewalker 
{
	import bipede.animation.Sequenceur;
	import bipede.controleurs.Animateur;
	import bipede.membres.Person;
	import events.MarcheEvent;
	import events.PersonEvent;
	import flash.geom.Point;
	import flash.geom.Rectangle;
	import flash.utils.Dictionary;
	
	public class Data 
	{
		public var alfred_data:Dictionary = new Dictionary();
		public var alphonse_data:Dictionary = new Dictionary();
		
		public function Data() 
		{
			// IKPerson1
			
			alfred_data.distance_support = 68;
			alfred_data.distance_support_accroupi = 36;
			alfred_data.distance_support_max = 75;
			
			alfred_data.rectangle_pied_gauche = new Rectangle( 10, 10, 130, 130);
			alfred_data.rectangle_pied_gauche_haut = new Rectangle( 10, -20, 130, 80);
			alfred_data.rectangle_pied_gauche_bas = new Rectangle( 10, 40, 130, 80);
			
			alfred_data.bras_ballants_droite = new Vector.<Point>;
			alfred_data.bras_ballants_droite.push( new Point( -95,102 ) );
			alfred_data.bras_ballants_droite.push( new Point( -76,107 ) );
			alfred_data.bras_ballants_droite.push( new Point( -47, 109 ) );	
			
			alfred_data.bras_ballants_gauche = new Vector.<Point>;
			alfred_data.bras_ballants_gauche.push( new Point( 45,88 ) );
			alfred_data.bras_ballants_gauche.push( new Point( 75,91 ) );
			alfred_data.bras_ballants_gauche.push( new Point( 78, 90 ) );	
			
			// IKPerson2
			
			alphonse_data.distance_support = 80;
			alphonse_data.distance_support_accroupi = 44;
			alphonse_data.distance_support_max = 95;
			
			alphonse_data.rectangle_pied_gauche = new Rectangle( 10, 10, 130, 130);
			alphonse_data.rectangle_pied_gauche_haut = new Rectangle( 10, -20, 130, 80);
			alphonse_data.rectangle_pied_gauche_bas = new Rectangle( 10, 40, 130, 80);
			
			alphonse_data.bras_ballants_droite = new Vector.<Point>;
			alphonse_data.bras_ballants_droite.push( new Point( -95,102 ) );
			alphonse_data.bras_ballants_droite.push( new Point( -76,107 ) );
			alphonse_data.bras_ballants_droite.push( new Point( -47, 109 ) );	
			
			alphonse_data.bras_ballants_gauche = new Vector.<Point>;
			alphonse_data.bras_ballants_gauche.push( new Point( 45,88 ) );
			alphonse_data.bras_ballants_gauche.push( new Point( 75,91 ) );
			alphonse_data.bras_ballants_gauche.push( new Point( 78, 90 ) );				
			
			
		}

		public function set_animations( event:PersonEvent ):void
		{
			trace ( event.target.name, " Ready", "set_animations" );
			switch( event.target.name )
			{
				case "alfred" :
				case "alphonse" :

				var _perso:Person = event.target as Person;
				
				// .............. animations

				// marche

				var marche:Animateur = new Animateur( _perso );
				marche.action( "marche" );
				marche.configure( { 
					distance_support:_perso.data.distance_support, 
					nombre_pas:0, 
					pasFrames:12, 
					offset_bz_bipede : new Point( 0, 10 ),
					ctrl_talon_1:new Point( -15, -50 ),
					ctrl_talon_2:new Point( 15, -20 ),
					ctrl_orteil_1:new Point( -15, -40 ),
					ctrl_orteil_2:new Point( 15, -80 )
				} );

				// leve les bras

				var leve_les_bras:Animateur = new Animateur( _perso );
				leve_les_bras.action( "leve_les_bras" );
				leve_les_bras.configure( { 
					vitesse:.05, 
					cible:new Point(0, -240 ),
					main_droite:_perso.main_droite,
					main_gauche:_perso.main_gauche
				} );
				
				// baisse les bras
				
				var baisse_les_bras:Animateur = new Animateur( _perso );
				baisse_les_bras.action( "baisse_les_bras" );
				baisse_les_bras.configure( { 
					vitesse:.05, 
					cible:new Point(0, 240 ),
					main_droite:_perso.main_droite,
					main_gauche:_perso.main_gauche
				} );
				
				// saut

				var saut:Animateur = new Animateur( _perso );
				saut.action( "saut" );// , true );
				saut.configure( { 
					sujet:_perso,
					vitesse:.2
				} );
						
				// bras ballants

				var bras_ballants:Animateur = new Animateur( _perso );
				bras_ballants.action( "bras_ballants" );
				//(bras_ballants.anim as Posture).addEventListener( DrawEvent.DRAWCURVE, drawManager.draw_curve );
				bras_ballants.configure( { 
					distance_support:_perso.data.distance_support, 
					amplitude: .7, 
					phase:40,// période de révolution, mesurée en vitesse * current_frame
					vitesse:1,
					bz_droite: _perso.data.bras_ballants_droite.concat(),
					bz_gauche: _perso.data.bras_ballants_gauche.concat()
				} );

				// accroupi
				
				var accroupi:Animateur = new Animateur( _perso );
				accroupi.action( "accroupi" );
				accroupi.configure( { 
					vitesse:.25
				} );


				// ............ sequences d'animation
				
				var seq:Vector.<Animateur> = new Vector.<Animateur>();
				seq.push( baisse_les_bras );
				seq.push( leve_les_bras );
				//seq.push( posture_base );
				
				var _sequenceur:Sequenceur = new Sequenceur( seq, true );
				//_sequenceur.start();
				
				break;
			}
		}
		
	
	}
	
}